import {
  ASSET_TYPES
} from 'shared/constants'
import {
  initAssetRegisters
} from './assets'
import {
  initExtend
} from './extend'

export function initGlobalAPI(Vue) {
  // 初始化options选项
  Vue.options = Object.create(null)
  // 初始化options属性 components directives filters
  ASSET_TYPES.forEach(type => {
    Vue.options[type + 's'] = Object.create(null)
  })
  // 把当前实例挂载到 _base
  Vue.options._base = Vue
  // 初始化extend 创建Vue子构造函数
  initExtend(Vue)
  // 初始化构造函数属性 component directive filter
  initAssetRegisters(Vue)
}